// 文件：utils/pdfProcessor.js
const { spawn } = require('child_process');
const path = require('path');

// Python 解释器路径（根据你的实际环境修改）
const pythonPath = 'C:/Users/admin/.conda/envs/tupianchuli/python.exe';

/**
 * 调用 Python 脚本处理指定文件夹中的 PDF 文件，并返回处理结果的 Promise
 * @param {string} key - PDF 文件夹名称，比如 'cell'
 * @returns {Promise<Object>} - 返回 Python 脚本的标准 JSON 结构，如：
 * {
 *   status: "completed",
 *   total_files: 8,
 *   success_count: 8,
 *   ...
 * }
 */
const pdfOutIamges = (key) => {
  return new Promise((resolve, reject) => {
    const pythonScriptPath = path.join(__dirname, '../pythons/extract_pdf_images.py'); // 根据你的实际路径调整
    const inputUrl = '../uploads/pdf/' + key;
    const outputUrl = '../uploads/img/' + key;

    const inputFolder = path.join(__dirname, inputUrl); // 输入文件夹绝对路径
    const outputRoot = path.join(__dirname, outputUrl); // 输出文件夹绝对路径

    console.log('[服务端] 输入文件夹:', inputFolder);
    console.log('[服务端] 输出文件夹:', outputRoot);

    const args = [
      pythonScriptPath,
      inputFolder,
      outputRoot
    ];

    const pythonProcess = spawn(pythonPath, args);

    let stdoutData = '';
    let stderrData = '';

    pythonProcess.stdout.on('data', (data) => {
      stdoutData += data.toString();
    });

    pythonProcess.stderr.on('data', (data) => {
      stderrData += data.toString();
    });

    pythonProcess.on('close', (code) => {
      if (code !== 0) {
        console.error('❌ Python 脚本执行失败，退出码:', code);
        console.error('错误输出:', stderrData);
        return reject(new Error(`Python 执行失败: ${stderrData}`));
      }

      try {
        const result = JSON.parse(stdoutData);
        console.log('✅ Python 返回结果:', result);
        resolve(result); // 返回 Python 的结构化 JSON 数据
      } catch (e) {
        console.error('❌ 无法解析 Python 返回的 JSON，原始输出:', stdoutData);
        reject(new Error('Python 返回了无效的 JSON'));
      }
    });
  });
};

module.exports = {
  pdfOutIamges
};